﻿using UnityEditor;
using UnityEngine;

#if UNITY_EDITOR

namespace HXu.UnityEditor
{
    /// <summary>
    /// 图片导入自动处理成精灵图片 <br />
    /// AssetPostprocessor 接口官网 <br />
    /// https://docs.unity3d.com/cn/current/ScriptReference/AssetPostprocessor.html
    /// </summary>
    public class SpriteProcessor : AssetPostprocessor
    {
        //拖入unity的图片自动修改图片的属性为Sprite

        // 定义图片资源的路径，只有在这个路径下的图片才会被处理
        private readonly string _address = "_HXu/Sprites/";
        private readonly string _lowerAddress;
        
        public SpriteProcessor()
        {
            // 缓存小写的路径，避免重复计算
            _lowerAddress = _address.ToLower();
        }

        /// <summary>
        /// 在导入图片资源之前调用，用于预处理图片属性
        /// </summary>
        private void OnPreprocessTexture()
        {
            try
            {
                // 检查图片路径是否包含指定的地址（不区分大小写）
                if (assetPath.ToLower().Contains(_lowerAddress))
                {
                    // 获取图片导入器
                    TextureImporter textureImporter = (TextureImporter)assetImporter;
                    // 设置图片类型为精灵（Sprite）
                    textureImporter.textureType = TextureImporterType.Sprite;
                    // 允许读取图片像素数据
                    textureImporter.isReadable = true;
                    // 禁用Mipmap生成
                    textureImporter.mipmapEnabled = false;
                }
            }
            catch (System.Exception ex)
            {
                // 记录异常信息，便于调试
                Debug.LogError($"Failed to preprocess texture: {assetPath}. Error: {ex.Message}");
            }
        }
    }
}
#endif